package com.generalbackend.role.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.generalbackend.role.model.entity.Permission;
import com.generalbackend.role.model.query.PermissionQuery;

import java.util.List;

/**
* ClassName: PermissionQueryOption
* @Description 业务层
* @author tim.xie
* @date 2021-12-10 11:01
*/

public interface IPermissionService extends IService<Permission> {

    /**
     * 添加
     * @param permission
     * @return
     */
    Boolean insert(Permission permission);

    /**
     * 修改
     * @param permission
     * @return
     */
    Boolean update(Permission permission);

     /**
     * 根据id删除
     * @param id
     * @return
     */
    Boolean deleteById(String id);

    /**
     * 根据id得到对象
     * @param id
     * @return
     */
    Permission  selectById(String id);

    /**
    * 根据条件查询集合列表
    * @param permissionQuery
    * @return
    */
    JSONObject list(PermissionQuery permissionQuery);

    /**
     * 更新权限表
     * @param permissions
     */
    void updatePermissionTable(List<Permission> permissions);

    /**
     * 获取全部权限
     * @return
     */
    List<Permission> allPermission();

    /**
     * 通过用户id获取该用户的所有权限
     * @param userId
     * @return
     */
    JSONArray getPermissionByUserId(Long userId);

    /**
     * 获取菜单树
     * @return
     */
    List<Permission> getPermissionTree();

    /**
     * 获取除了权限管理外的所有菜单树
     * @return
     */
    List<Permission> getAllPermissionTree();

}
